#ifndef _NE_GL_FRAME_BUFFER_OBJECT_H_
#define _NE_GL_FRAME_BUFFER_OBJECT_H_

#include <graphics/GLRenderBufferObject.h>

namespace ne
{
    class NEAPI GLFrameBufferObject : public GLObject
    {
        public:
            GLFrameBufferObject();

            void setUsage(const FrameBufferUsage usage);

            FrameBufferUsage getUsage() const;

            void bind();

            bool checkStatus();

            bool isFrameBuffer();

            void attachRenderBufferObject(GLRenderBufferObject *rbo, const FrameBufferAttachment &attachment);

            void attachTexture(Texture &texure, const FrameBufferAttachment attachment);

            virtual ~GLFrameBufferObject();

        private:
            GLFrameBufferObject(const GLFrameBufferObject &);

            GLFrameBufferObject& operator = (const GLFrameBufferObject &);

        private:
            FrameBufferUsage mUsage;
    };
}

#endif
